// 定义一个操作中的算法的骨架，而将一些步骤延迟到子类中。
//Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
// react和vue都使用了这个模式
class Page {
  load() {
    this.preload();
    this.loading();
    this.loaded();
  }
  preload() {
    throw new Exception("子类必须实现该方法")
  }
  loading() {
    throw new Exception("子类必须实现该方法")
  }
  loaded() {
    throw new Exception("子类必须实现该方法")
  }
}

class OrderListPage extends Page {
  preload() {
    console.log("OrderListPage 预加载开始")
  }
  loading() {
    console.log("OrderListPage 加载中")
  }
  loaded() {
    console.log("OrderListPage 加载完成")
  }
}

new OrderListPage().load()